package Interfaz;

import java.awt.event.ActionListener;

import java.awt.Dimension;
import java.awt.Font;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.GridLayout;
import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.text.DecimalFormat;
import java.text.NumberFormat;

import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.border.TitledBorder;

import javax.swing.ButtonGroup;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;

public class PanelEstablecer extends JPanel implements ActionListener
{
	
	// -----------------------------------------------------------------
    // Constantes
    // -----------------------------------------------------------------
    /**
     * Representa la frecuencia AM
     */
    public static final String FRECUENCIA_AM = "AM";

    /**
     * Representa la frecuencia FM
     */
    public static final String FRECUENCIA_FM = "FM";
	
	private static final String ON_OFF = "ON_OFF";

    private static final String AVANZAR = "AVANZAR";

    private static final String RETROCEDER = "RETROCEDER";

	// -----------------------------------------------------------------
    // Atributos
    // -----------------------------------------------------------------
    
    boolean onOff = true;
    
    boolean frecuenciaAM = true;
    
    boolean frecuenciaFM = false;
    
	// -----------------------------------------------------------------
    // Atributos de interfaz
    // -----------------------------------------------------------------
	
    private JButton botonOnOff;
    
    private JButton botonAvanzar;
    
    private JButton botonRetroceder;
    
    private JRadioButton botonAM;
    
    private JRadioButton botonFM;
    
    private ButtonGroup grupo;
    
    private JTextArea emisora;
    
    private JScrollPane barra;
    
    // -----------------------------------------------------------------
    // Atributos
    // -----------------------------------------------------------------
    
	/**
     * Ventana principal
     */
    private InterfazRadio principal;
	
	// -----------------------------------------------------------------
    // Constructores
    // -----------------------------------------------------------------
	
    public PanelEstablecer (InterfazRadio r)
    { 
        principal = r;
    	
        setBorder( new TitledBorder( "Radio" ) );
        setLayout( new GridBagLayout( ) );

        //Boton Avanzar
        botonAvanzar = new JButton( "Avanzar" );
        botonAvanzar.setActionCommand( AVANZAR );
        botonAvanzar.addActionListener( this );
        botonAvanzar.setEnabled(false);
        GridBagConstraints gbc = new GridBagConstraints( );
        gbc.gridx = 3;
        gbc.gridy = 1;
        gbc.fill = GridBagConstraints.BOTH;
        add( botonAvanzar, gbc);

        //Boton Retroceder
        botonRetroceder = new JButton( "Retroceder" );
        botonRetroceder.setActionCommand( RETROCEDER );
        botonRetroceder.addActionListener( this );
        botonRetroceder.setEnabled(false);
        gbc = new GridBagConstraints( );
        gbc.gridx = 4;
        gbc.gridy = 1;
        gbc.fill = GridBagConstraints.BOTH;
        add( botonRetroceder, gbc);
       
        //Boton On/Off
        botonOnOff = new JButton( "ON/OFF" );
        botonOnOff.setActionCommand( ON_OFF );
        botonOnOff.addActionListener( this );
        gbc = new GridBagConstraints( );
        gbc.gridx = 0;
        gbc.gridy = 0;
        gbc.fill = GridBagConstraints.BOTH;
        add( botonOnOff, gbc );
        
        //Opcion AM
        botonAM = new JRadioButton( FRECUENCIA_AM );
        botonAM.addActionListener( this );
        botonAM.setActionCommand( FRECUENCIA_AM  );
        botonAM.setEnabled(false);
        gbc = new GridBagConstraints( );
        gbc.gridx = 3;
        gbc.gridy = 0;
        gbc.fill = GridBagConstraints.BOTH;
        botonAM.setSelected(true);
        add( botonAM, gbc );
        
        //Opcion FM
        botonFM = new JRadioButton( FRECUENCIA_FM );
        botonFM.addActionListener( this );
        botonFM.setActionCommand( FRECUENCIA_FM  );
        botonFM.setEnabled(false);
        gbc = new GridBagConstraints( );
        gbc.gridx = 4;
        gbc.gridy = 0;
        gbc.fill = GridBagConstraints.BOTH;
        botonFM.setSelected(false);
        add( botonFM, gbc );
        
        grupo = new ButtonGroup( );
        grupo.add( botonAM );
        grupo.add( botonFM );
        
        // Despliega en que emisora se encuentra
        emisora = new JTextArea( );
        emisora.setLineWrap( true );
        emisora.setWrapStyleWord( true );
        emisora.setEditable(false);
        barra = new JScrollPane( emisora );
        barra.setPreferredSize( new Dimension( 60, 20 ) );
        gbc = new GridBagConstraints( );
        gbc.gridx = 5;
        gbc.gridy = 0;
        gbc.fill = GridBagConstraints.HORIZONTAL;
        add(barra, gbc);
    }
    
    // -----------------------------------------------------------------
    // M�todos
    // -----------------------------------------------------------------
	
    public JTextArea darTextArea()
    {
    	return emisora;
    }
    
    public void habilitarBotones()
    {
    	botonAM.setEnabled(true);
    	botonFM.setEnabled(true);
    	botonRetroceder.setEnabled(true);
    	botonAvanzar.setEnabled(true);
    }
    
    public void deshabilitarBotones()
    {
    	botonAM.setEnabled(false);
    	botonAM.setSelected(true);
    	botonFM.setEnabled(false);
    	botonRetroceder.setEnabled(false);
    	botonAvanzar.setEnabled(false);
    }
    
    public JRadioButton darBotonAM()
    {
    	return botonAM;
    }
    
    public JRadioButton darBotonFM()
    {
    	return botonFM;
    }
    
    public void actionPerformed( ActionEvent e )
    {
        String comando = e.getActionCommand( );

        if ( comando.equals(ON_OFF))
        {
        	if (onOff)
        	{
        		principal.habilitarBotones();
        		principal.inicializarRadio();
        		Double texto = principal.getEmisora();
        		emisora.setText(texto.toString());
        		onOff = false;
        	}
        	else
        	{
        		emisora.setText("    ");
        		principal.deshabilitarBotones();
        		principal.inicializarRadio();
        		onOff = true;        		
        	}
        }
        
        else if (comando.equals(FRECUENCIA_AM))
        {
          	if(!frecuenciaAM)
        	{
        		principal.change();
        		Double texto = principal.getEmisora();
        		emisora.setText(texto.toString());
        		frecuenciaAM = true;
        		frecuenciaFM = false;
        	}
        }
        
        else if (comando.equals(FRECUENCIA_FM))
        {
        	if (!frecuenciaFM)
        	{
        		principal.change();
        		Double texto = principal.getEmisora();
        		emisora.setText(texto.toString());
        		frecuenciaFM = true;
        		frecuenciaAM = false;
        	}
        }
        
        	
        else if( comando.equals( AVANZAR ) )
        {
        	principal.avanzar();
        	Double texto = principal.getEmisora();
        	NumberFormat formatter = new DecimalFormat("#0.0");
        	emisora.setText(formatter.format(texto));
        }
        
        else if( comando.equals( RETROCEDER ) )
        {
        	principal.retroceder();
        	Double texto = principal.getEmisora();
        	NumberFormat formatter = new DecimalFormat("#0.0");
        	emisora.setText(formatter.format(texto));
        }
    }
}
